package com.yunyao.dao.model;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.util.Date;

import com.yunyao.common.web.util.ConvertUtil;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 销售合同订单供货
 * </p>
 *
 * @author xingjishuai
 * @since 2024-07-02
 */
@Getter
@Setter
@TableName("bamu_po_supply")
public class BamuPoSupply {

    /**
     * 主键ID
     */
    private String id;

    /**
     * 合同ID
     */
    private String contractId;

    /**
     * 合同名称
     */
    private String contractName;

    /**
     * 供应商单位ID
     */
    private String supplierId;

    /**
     * 供应商单位名称
     */
    private String supplierName;

    /**
     * 项目ID
     */
    private String projectId;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 采购单位ID
     */
    private String purchaseDeptId;

    /**
     * 采购单位名称
     */
    private String purchaseDeptName;

    /**
     * 申请单ID
     */
    private String applyId;

    /**
     * 订单编号
     */
    private String orderSn;

    /**
     * 订单名称
     */
    private String orderName;

    /**
     * 材料订单总数量
     */
    private BigDecimal orderNum;

    /**
     * 收货时间
     */
    private Date receivingTime;

    /**
     * 本次含税价格
     */
    private BigDecimal taxTotalPrice;

    /**
     * 本次不含税价格
     */
    private BigDecimal notaxTotalPrice;

    /**
     * 合同方式0电线电缆及光纤光缆 1 电梯及扶梯
     */
    private String contractMethod;

    /**
     * 供应商供货时间
     */
    private Date shipmentAt;

    /**
     * 供应商供货人ID
     */
    private String shipmentUserId;

    /**
     * 供应商供货人名称
     */
    private String shipmentUserName;

    /**
     * 供应商供货描述
     */
    private String shipmentDesc;

    /**
     * 供应商供货附件
     */
    private String shipmentFiles;

    /**
     * 项目部确认时间
     */
    private Date takeAt;

    /**
     * 项目部确认人ID
     */
    private String takeUserId;

    /**
     * 项目部确认人名称
     */
    private String takeUserName;

    /**
     * 项目部确认描述
     */
    private String takeDesc;

    /**
     * 项目部确认附件
     */
    private String takeFiles;

    /**
     * 创建时间
     */
    @TableField(value = "created_at" , fill = FieldFill.INSERT)
    private Date createdAt;

    /**
     * 创建人
     */
    @TableField(value = "created_by" , fill = FieldFill.INSERT)
    private String createdBy;

    /**
     * 创建部门
     */
    @TableField(value = "create_dept" , fill = FieldFill.INSERT)
    private String createDept;

    /**
     * 修改时间
     */
    @TableField(value = "updated_at" , fill = FieldFill.INSERT_UPDATE)
    private Date updatedAt;

    /**
     * 修改人
     */
    @TableField(value = "updated_by" , fill = FieldFill.INSERT_UPDATE)
    private String updatedBy;

    /**
     * 业务状态 1:正常
     */
    @TableField("`status`")
    private Integer status;

    /**
     * 数据删除状态0:未删除,1:删除
     */
    private Integer isDeleted;

    /**
     * 租户ID
     */
    @TableField(value = "tenant_id", fill = FieldFill.INSERT)
    private String tenantId;

    /**
     * 供货状态0未发起供货 1待供货 2供货完成 3供货延迟 4 验收中 5、验收完成
     */
    private Integer supplyStatus;

    /**
     * 对账状态 0 待对账 1 对账中 2对账完成
     */
    private String reconciliationStatus;

    /**
     * 铜价系数
     */
    private BigDecimal copperCoefficient;

    /**
     * 云采项目确认 0=否 1=是
     */
    private Integer projectFlowableStatus;

    /**
     * 发票状态0=未开票 1=已开票
     */
    private String invoiceStatus;

    /**
     * 项目确认附件
     */
    private String projectConfirmFile;

    /**
     * 供应商确认附件
     */
    private String supplyConfirmFile;

    /**
     * 本次供货总数量
     */
    private BigDecimal supplyNum;

    /**
     * 送货时间
     */
    private Date supplyTime;

    /**
     * 送货用户ID
     */
    private String supplyUserId;

    /**
     * 送货用户名称
     */
    private String supplyUserName;

    /**
     * 送货说明
     */
    private String supplyMark;

    /**
     * 送货名称
     */
    private String supplyFile;

    /**
     * 对账总价
     */
    private BigDecimal reconciliationPrice;

    /**
     * 对账总数量
     */
    private BigDecimal reconciliationNum;

    /**
     * 供货状态备份
     */
    private Integer bakSupplyStatus;

    /**
     * 对账结算状态0=未结算 1=结算中 2=已结算
     */
    private String settlementStatus;

    /**
     * 项目订单采购单位ID
     */
    private String saleDeptId;

    /**
     * 项目订单采购单位ID
     */
    private String saleDeptName;

    /**
     * 项目所属公司ID
     */
    private String projectDeptId;

    /**
     * 项目所属公司名称
     */
    private String projectDeptName;


    public void setSupplyConfirmFile(String supplyConfirmFile) {
        if (ConvertUtil.isValidNotEmptyJson(supplyConfirmFile)) {
            this.supplyConfirmFile = supplyConfirmFile;
        }
    }

    public void setProjectConfirmFile(String projectConfirmFile) {
        if (ConvertUtil.isValidNotEmptyJson(projectConfirmFile)) {
            this.projectConfirmFile = projectConfirmFile;
        }
    }

    public void setTakeFiles(String takeFiles) {
        if (ConvertUtil.isValidNotEmptyJson(takeFiles)) {
            this.takeFiles = takeFiles;
        }
    }

    public void setSupplyFile(String supplyFile) {
        if (ConvertUtil.isValidNotEmptyJson(supplyFile)) {
            this.supplyFile = supplyFile;
        }
    }
    public void setShipmentFiles(String shipmentFiles) {
        if (ConvertUtil.isValidNotEmptyJson(shipmentFiles)) {
            this.shipmentFiles = shipmentFiles;
        }
    }
}
